Methods and systems for generating a dynamic workflow in a multi-tenant database environment

ABSTRACT

Techniques and systems for modifying a virtual machine functionality. Archive files each including at least a class files are received. The archive files are stored within the virtual machine. The virtual machine runs on a host system and neither the virtual machine nor the host system are restarted in response to the receiving or storing of the archive files. Files of the host system are scanned to find class files that are not included in a class path for the virtual machine. The class files are copied to a class path for the virtual machine. Neither the virtual machine nor the host system are restarted in response to the copying of the class files. The classes corresponding to the class files are registered in the virtual machine in response to the copying of the class files to the class path. Neither the virtual machine nor the host system are restarted in response to the registration of the classes.

CLAIM OF PRIORITY

This application claims the benefit of U.S. Provisional PatentApplication 61/349,135, entitled Methods and Systems for Generating aDynamic Workflow In a Multi-Tenant Database Environment, by Steve Wood,et al., filed May 27, 2010, the entire contents of which areincorporated herein by reference.

COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent file or records, but otherwise reserves all copyrightrights whatsoever.

TECHNICAL FIELD

Embodiments of the current implementations relate generally to workflowmanagement. More particularly embodiments of the implementations relateto techniques and mechanisms for generating dynamic workflows inmulti-tenant database environments.

BACKGROUND

The subject matter discussed in the background section should not beassumed to be prior art merely as a result of its mention in thebackground section. Similarly, a problem mentioned in the backgroundsection or associated with the subject matter of the background sectionshould not be assumed to have been previously recognized in the priorart. The subject matter in the background section merely representsdifferent approaches, which in and of themselves may also correspond toembodiments of the claimed inventions.

Business processes span every department in every industry. They definethe best practices of a company. In most companies, processes aremanual. They are defined and enforced with, for example, spreadsheets,email, and word of mouth. The result is inconsistent execution, lostopportunities, and higher operating costs.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the invention are illustrated by way of example, and notby way of limitation, in the figures of the accompanying drawings inwhich like reference numerals refer to similar elements.

FIG. 1 is a conceptual diagram of a mechanism to allow a user to developand/or modify a process and implement the process without restarting orrebooting of a virtual machine or host system.

FIG. 2 is a conceptual illustration of a workflow for generating aprocess without restarting or rebooting of a virtual machine or hostsystem.

FIG. 3 is a flow diagram of one embodiment of a technique forintegrating new code into a running virtual machine environment.

FIG. 4 is a block diagram of one embodiment of an agent to provideintegration of new code into a running virtual machine environment.

FIG. 5 is a block diagram of an environment in which an on-demanddatabase service might be used.

FIG. 6 is a block diagram of one embodiment of a multi-tenantenvironment.

DETAILED DESCRIPTION

In the following description, numerous specific details are set forth.However, embodiments of the invention may be practiced without thesespecific details. In other instances, well-known circuits, structuresand techniques have not been shown in detail in order not to obscure theunderstanding of this description.

Systems and methods are provided herein for providing dynamic workflowmanagement in a multi-tenant database system. As used herein, amulti-tenant database system refers to those systems in which variouselements of hardware and software of the database system may be sharedby one or more customers. For example, a given application server maysimultaneously process requests for a great number of customers, and agiven database table may store rows for a potentially much greaternumber of customers.

In one embodiment, a multi-tenant database system utilizes tenantidentifiers (IDs) within a multi-tenant environment to allow individualtenants to access their data while preserving the integrity of othertenant's data. In one embodiment, the multitenant database stores datafor multiple client entities each identified by a tenant ID having oneof one or more users associated with the tenant ID. Users of each ofmultiple client entities can only access data identified by a tenant IDassociated with their respective client entity. In one embodiment, themultitenant database is a hosted database provided by an entity separatefrom the client entities, and provides on-demand and/or real-timedatabase service to the client entities.

Cloud computing and/or multitenant environments make a new class ofapplications possible. To help get the most from these process-awareapplications, a visual process manager may be provided. This design toollets a user visually draw process flows or decision trees, andautomatically build these processes into a corresponding application. Inone embodiment, these applications can then be run by applications in acloud computing or multitenant environment.

In one embodiment, the visual process manager may function like having anavigation system inside an application to help users make better andfaster decisions. Applications may become more useful when users areprovided with recommendations, wizards, and automated tasks. Previously,applications began with someone drawing out the business process. Theprocess then gets hardcoded into the application and cannot be easilychanged as the business grows and adapts to the marketplace.

Yet processes change on a monthly, weekly, and even daily basis. As acloud-based process management solution, the visual process managercombines the speed and ease of the cloud with graphical process designto create a solution designed for continual process iteration. In oneembodiment, designing and changing business processes may be done in adrag-and-drop designer. It may be accomplished in as little as foursteps:

Step 1: Visual process designer—A user may design the processes with anintuitive user interface. For example, draw from a library of processtools, including presentation components (e.g., forms, questions,choices, and more) and logic components (e.g., task assignments,decision trees, and approval processes). The user may add components toa visual process design diagram through, for example, drag-and-dropactions. The development environment may provide wizards to the userinterface so that a user may build an application with no programming.In one embodiment, wizards can guide users through a process by decidingwhich pages to display next based on user input.

Step 2: Process simulator—The user and/or the development environmentmay function to optimize the process design by simulating processesbefore deploying them. This simulation may identify bottlenecks andconflicts, and iterate the process as needed.

Step 3: Real-time process engine—When an application is ready, thedevelopment environment may deploy it to the cloud or multitenantenvironment. In one embodiment, the real-time process engineautomatically scales the application to fit the needs of a tenant basedon, for example, size. The run-time engine may ensure the process is runconsistently without fail, including security measures, processdecisions, callouts, and automated actions, etc.

Once the application(s) is/are ready the files associated with theapplication(s) can be stored in the cloud or multitenant environment. Inone embodiment, these files are archive files that include multipleclass files that loaded and executed in running the application(s). Asdescribed in greater detail below, these archive files may be discoveredvia an automated mechanism that scans files of a host system to findarchive files.

Classes included in the archive files may be copied to a class path sothat the environment in which the applications are executed may accessthe classes. In one embodiment, the classes may be registered withoutneed of rebooting or otherwise restarting the host system or the virtualmachine environment in which the applications may run.

FIG. 1 is a conceptual diagram of a mechanism to allow a user to developand/or modify a process and implement the process without restarting orrebooting of a virtual machine or host system. In one embodiment, theuser may utilize a client computer device to develop the process thatmay be uploaded to and/or executed by a multitenant environment. Exampleembodiments of client devices coupled with multitenant environments aredescribed in greater detail below.

A user may interact with graphical user interface 100 to design aprocess (e.g., a business process, a work flow, a sales flow) that maybe implemented in virtual machine environment 180. In one embodiment,the user may interact with graphical user interface 100 to use graphicalrepresentations of process steps or elements that may be manipulated viauser interactions with graphical interface 100 to construct a process tobe implemented in virtual machine environment 180.

The process constructed via graphical interface 100 may be parsed and/orcompiled by parser/compiler 120. Parser/compiler 120 may function toconvert the graphical representation of the process to be implemented tocode 140 that may be executed in virtual machine environment 180. In oneembodiment, parser/compiler 120 desterilizes the process and stores theresult in a database. In one embodiment, parser/compiler 120 does notconvert the process to bytecode to be executed.

In one embodiment, a state machine utilizes metadata from the process toconstruct and execute the process. Metadata refers to a processdescription that is not compiled, but is converted from a description toan object model that is utilized by the state machine.

In one embodiment, parser/compiler 120 may provide analysis and/ordebugging functionality to assist the user in determining whether theprocess designed using graphical user interface 100 will provide thedesired functionality. In one embodiment, parser/compiler 120 operateson a pre-selected set of entry points or “hooks” that may be utilized tointegrate code 140 into existing code that may be executed in virtualmachine environment 180.

Once code 140 is created, it may be stored on storage device 175 thatmay be accessible by virtual machine environment 180. In one embodiment,storage device 175 represents a physical storage medium that is part ofa host system (not illustrated in FIG. 1) upon which virtual machineenvironment 180 exists. Virtual machine environment 180 may access allor a portion of storage device 175 during execution to provide a virtualmachine experience to a user thereof.

FIG. 2 is a conceptual illustration of a workflow for generating aprocess without restarting or rebooting of a virtual machine or hostsystem. The illustration of FIG. 2 provides a conceptual illustration ofan interaction between user interface objects that may be used to createa process and one or more corresponding code entry points.

User input may be received by process creation interface 230 to assembleone or more process nodes (e.g., 232, 234, 236, 238, 240) to construct aprocess. The nodes may represent pre-defined operations or responsesthat the user desires to be included in the process being constructed.One or more of the nodes may include calls to lower level code blocks(e.g., 265, 270, 275, 280) that may provide access to certain types ofoperations associated with the code blocks.

For example, node 234 may include an operation that uses a message thatmay be passed to another entity. In one embodiment, node 234 includes acall to message code 270 to provide an entry into messaging operationssupported by the virtual machine interface in which the process willoperate. Similarly, node 238 may use a different kind of message, butstill include a call to message code 270 to implement the messagefunctionality of node 238.

As another example, node 240 may include a call to table code 275, whichmay provide the functionality to create a table based on input from node240. The example of FIG. 2 provides code blocks for validation,messaging, tables and database operations. In alternate embodiments,additional and/or different code entry points may be supported. In oneembodiment, when the interface components are parsed and/or compiled,calls to the code blocks and/or portions of the code blocks may beincluded in the resulting compiled code. This may provide a morestandardized code interface that may support the integration proceduresdescribed below as well as result in a reduced likelihood of errors.

FIG. 3 is a flow diagram of one embodiment of a technique forintegrating new code into a running virtual machine environment. Thefunctionality described with respect to FIG. 3 may be provided by auser/client computer system, by a server system providing at least aportion of a multitenant or cloud environment, or some combinationthereof.

All or a portion of the file system of the host computer system isscanned for archive files or other files including classes to be used bya process (created as described above) or other functionality, 310. Inone embodiment, the scanning is triggered by a call to a class orfunction that is not registered. In another embodiment, the scanning istriggered by a user-generated request. In yet another embodiment, thescanning may be triggered by a timer function (e.g., scan every 60minutes, 4 times a day, every 30 minutes). Combinations of thesetriggering events may also be supported.

In one embodiment, an agent or other component on the host systemanalyzing file directories of the host system to find files that mayinclude classes that have not been registered accomplishes scanning Inone embodiment, the agent scans the file directories for archive files(e.g., .jar files for JAVA®) or class files (e.g., .class files forJAVA®).

The identified class files are extracted, 320, if necessary. If a fileincludes only a single class, then no extraction may be necessary. If afile includes multiple classes, the multiple classes may be extractedand, for example, stored as individual files, or links/pointers to theindividual classes.

The identified classes are stored on the class path, 330. Storing theclasses on the class path allows the virtual machine environment todetermine what classes are supported. The new classes may be registered,350, without requiring a restart of the virtual machine environment.

FIG. 4 is a block diagram of one embodiment of an agent to provideintegration of new code into a running virtual machine environment. Theagent of FIG. 4 may provide the functionality discussed above withrespect to FIG. 3. The agent may exist, for example, within a virtualmachine that may be part of a multitenant environment. As anotherexample, the agent may be part of an application running on a servercomputing platform.

Class management agent 400 includes control logic 410, which implementslogical functional control to direct operation of class management agent400, and/or hardware associated with directing operation of classmanagement agent 400. Logic may be hardware logic circuits and/orsoftware routines. In one embodiment, class management agent 400includes one or more applications 412, which represent code sequenceand/or programs that provide instructions to control logic 410.

Class management agent 400 includes memory 414, which represents amemory device and/or access to a memory resource for storing data and/orinstructions. Memory 414 may include memory local to class managementagent 400, as well as, or alternatively, including memory of the hostsystem on which class management agent 400 resides. Class managementagent 400 also includes one or more interfaces 416, which representaccess interfaces to/from (an input/output interface) class managementagent 400 with regard to entities (electronic or human) external toclass management agent 400.

Class management agent 400 also includes class management engine 420,which represents one or more functions or module that enable classmanagement agent 400 to provide the indexing services as describedabove. The example of FIG. 4 provides several modules that may beincluded in class management engine 420; however, different and/oradditional modules may also be included. Example modules that may beinvolved in providing the class management functionality includescanning module 430, extraction module 440, class copy module 450, classregister module, and trigger module 470. Each of these modules mayfurther include other sub-modules to provide other functions. As usedherein, a module refers to routine, a subsystem, logic circuit,microcode, etc., whether implemented in hardware, software, firmware orsome combination thereof.

Scanning module 430 operates to scan the host system for files that mayinclude one or more classes. In one embodiment, scanning module 430 mayscan the contents of files located on the host system for classes.Scanning module 430 may, for example, search for tags or other characterstrings that indicate a class definition. Other techniques foridentifying classes may also be used. Scanning module 430 may provide anidentification of, or link or path to, one or more files including oneor more classes to other modules in class management agent 400.

Extraction module 440 operates to extract classes from files thatinclude the classes. In one embodiment, extraction module 440 operatesin information provided by scanning module 430 to locate files includingclasses. Extraction module 440 extracts one or more classes from thefiles. Class copy module 450 operates to copy the classes to the classpath, or other location, where the classes may be registered. Class copymodule 450 may operate with extraction module 440 to copy the classes.

Class register module 460 operates to register the classes with the hostsystem and/or virtual machine. In one embodiment, class register module460 scans the class path to determine whether any classes on the classpath have not been registered, and registers the classes. Class registermodule 460 causes the classes to be registered without requiring thatthe host system and/or virtual machine to be restarted.

Trigger module 470 operates to trigger the scanning and registrationprocess discussed above. In one embodiment, trigger module 470 operatesas a timer to trigger scanning and/or registration upon the expirationof specified time intervals. In another embodiment, trigger module 470operates to trigger scanning and/or registration upon detectingspecified conditions, for example, a call to a class that has not beenregistered. Other conditions may also be supported.

FIG. 5 is a block diagram of an environment in which an on-demanddatabase service might be used. Environment 510 may include user systems512, network 514, system 516, processor system 517, application platform518, network interface 520, tenant data storage 522, system data storage524, program code 526, and process space 528. In other embodiments,environment 510 may not have all of the components listed and/or mayhave other elements instead of, or in addition to, those listed above.

In one embodiment, environment 510 is an environment in which anon-demand database service exists. In another embodiment, environment510 is a cloud computing environment that provides services to multipleusers. User system 512 may be any machine or system that is used by auser to access a database user system. For example, any of user systems512 can be a handheld computing device, a mobile phone, a laptopcomputer, a work station, and/or a network of computing devices. Asillustrated in FIG. 5 (and in more detail in FIG. 6) user systems 512might interact via a network 514 with an on-demand database service,which is system 516.

An on-demand database service, such as system 516, is a database systemthat is made available to outside users that do not need to necessarilybe concerned with building and/or maintaining the database system, butinstead may be available for their use when the users need the databasesystem (e.g., on the demand of the users). Some on-demand databaseservices may store information from one or more tenants stored intotables of a common database image to form a multi-tenant database system(MTS). Accordingly, “on-demand database service 516” and “system 516”will be used interchangeably herein.

A database image may include one or more database objects. A relationaldatabase management system (RDMS) or the equivalent may execute storageand retrieval of information against the database object(s). Applicationplatform 518 may be a framework that allows the applications of system516 to run, such as the hardware and/or software, e.g., the operatingsystem. In an embodiment, on-demand database service 516 may include anapplication platform 518 that enables creation, managing and executingone or more applications developed by the provider of the on-demanddatabase service, users accessing the on-demand database service viauser systems 512, or third party application developers accessing theon-demand database service via user systems 512.

Network 514 is any network or combination of networks of devices thatcommunicate with one another. For example, network 514 can be any one orany combination of a LAN (local area network), WAN (wide area network),telephone network, wireless network, point-to-point network, starnetwork, token ring network, hub network, or other appropriateconfiguration. Indexer(s) 530 may include one or more indexers thatoperate as described herein with the indexes created by indexer(s) 530being backed up as described herein.

One arrangement for elements of system 516 is shown in FIG. 5, includingnetwork interface 520, application platform 518, tenant data storage 522for tenant data 523, system data storage 524 for system data 525accessible to system 516 and possibly multiple tenants, program code 526for implementing various functions of system 516, and a process space528 for executing MTS system processes and tenant-specific processes,such as running applications as part of an application hosting service.

In one embodiment, class management agent 530 resides in system 516. Inone embodiment, class management agent 530 may provide some or all ofthe functionality of the agent described above, for example, the agentof FIG. 4. In another embodiment, class management agent 530 may resideon multiple systems and/or user devices.

Several elements in the system shown in FIG. 5 include conventional,well-known elements that are explained only briefly here. For example,each user system 512 could include a desktop personal computer,workstation, laptop, PDA, cell phone, or any wireless access protocol(WAP) enabled device or any other computing device capable ofinterfacing directly or indirectly to the Internet or other networkconnection. Each user system 512 also typically includes one or moreuser interface devices, such as a keyboard, a mouse, trackball, touchpad, touch screen, pen or the like, for interacting with a graphicaluser interface (GUI) provided by the browser on a display (e.g., amonitor screen, LCD display, etc.) in conjunction with pages, forms,applications and other information provided by system 516 or othersystems or servers.

The user interface device can be used to access data and applicationshosted by system 516, and to perform searches on stored data, andotherwise allow a user to interact with various GUI pages that may bepresented to a user. As discussed above, embodiments are suitable foruse with the Internet, which refers to a specific global internetwork ofnetworks. However, it should be understood that other networks can beused instead of the Internet, such as an intranet, an extranet, avirtual private network (VPN), a non-TCP/IP based network, any LAN orWAN or the like.

According to one embodiment, each user system 512 and all of itscomponents are operator configurable using applications, such as abrowser, including computer code run using a central processing unitsuch as an Intel Pentium® processor or the like. Similarly, system 516(and additional instances of an MTS, where more than one is present) andall of their components might be operator configurable usingapplication(s) including computer code to run using a processing unitsuch as processor system 517, which may include an Intel Pentium®processor or the like, and/or multiple processor units.

A computer program product embodiment includes a machine-readablestorage medium (media) having instructions stored thereon/in which canbe used to program a computer to perform any of the processes of theembodiments described herein. Computer code for operating andconfiguring system 516 to intercommunicate and to process web pages,applications and other data and media content as described herein arepreferably downloaded and stored on a hard disk, but the entire programcode, or portions thereof, may also be stored in any other volatile ornon-volatile memory medium or device as is well known, such as a ROM orRAM, or provided on any media capable of storing program code, such asany type of rotating media including floppy disks, optical discs,digital versatile disk (DVD), compact disk (CD), microdrive, andmagneto-optical disks, and magnetic or optical cards, nanosystems(including molecular memory ICs), or any type of media or devicesuitable for storing instructions and/or data.

Additionally, the entire program code, or portions thereof, may betransmitted and downloaded from a software source over a transmissionmedium, e.g., over the Internet, or from another server, as is wellknown, or transmitted over any other conventional network connection asis well known (e.g., extranet, VPN, LAN, etc.) using any communicationmedium and protocols (e.g., TCP/IP, HTTP, HTTPS, Ethernet, etc.) as arewell known. It will also be appreciated that computer code forimplementing embodiments of the present invention can be implemented inany programming language that can be executed on a client system and/orserver or server system such as, for example, C, C++, HTML, any othermarkup language, Java™, JavaScript, ActiveX, any other scriptinglanguage, such as VBScript, and many other programming languages as arewell known may be used. (Java™ is a trademark of Sun Microsystems,Inc.).

According to one embodiment, each system 516 is configured to providewebpages, forms, applications, data and media content to user (client)systems 512 to support the access by user systems 512 as tenants ofsystem 516. As such, system 516 provides security mechanisms to keepeach tenant's data separate unless the data is shared. If more than oneMTS is used, they may be located in close proximity to one another(e.g., in a server farm located in a single building or campus), or theymay be distributed at locations remote from one another (e.g., one ormore servers located in city A and one or more servers located in cityB).

As used herein, each MTS could include one or more logically and/orphysically connected servers distributed locally or across one or moregeographic locations. Additionally, the term “server” is meant toinclude a computer system, including processing hardware and processspace(s), and an associated storage system and database application(e.g., OODBMS or RDBMS) as is well known in the art. It should also beunderstood that “server system” and “server” are often usedinterchangeably herein. Similarly, the database object described hereincan be implemented as single databases, a distributed database, acollection of distributed databases, a database with redundant online oroffline backups or other redundancies, etc., and might include adistributed database or storage network and associated processingintelligence.

In FIG. 6 elements of system 516 and various interconnections in anembodiment are further illustrated. FIG. 6 shows that user system 512may include processor system 512A, memory system 512B, input system512C, and output system 512D. FIG. 6 shows network 514 and system 516.FIG. 6 also shows that system 516 may include tenant data storage 522,tenant data 523, system data storage 524, system data 525, UserInterface (UI) 630, Application Program Interface (API) 632, PL/SOQL634, save routines 636, application setup mechanism 638, applicationsservers 600 ₁-600 _(N), system process space 602, tenant process spaces604, tenant management process space 610, tenant storage area 612, userstorage 614, and application metadata 616. In other embodiments,environment 510 may not have the same elements as those listed aboveand/or may have other elements instead of, or in addition to, thoselisted above.

User system 512, network 514, system 516, tenant data storage 522, andsystem data storage 524 were discussed above in FIG. 5. Regarding usersystem 512, processor system 512A may be any combination of one or moreprocessors. Memory system 512B may be any combination of one or morememory devices, short term, and/or long term memory. Input system 512Cmay be any combination of input devices, such as one or more keyboards,mice, trackballs, scanners, cameras, and/or interfaces to networks.Output system 512D may be any combination of output devices, such as oneor more monitors, printers, and/or interfaces to networks.

As shown by FIG. 6, system 516 may include a network interface 520implemented as a set of HTTP application servers 600, an applicationplatform 518, tenant data storage 522, and system data storage 524. Alsoshown is system process space 602, including individual tenant processspaces 604 and a tenant management process space 610. Each applicationserver 600 may be configured to tenant data storage 522 and the tenantdata 523 therein, and system data storage 524 and the system data 525therein to serve requests of user systems 512. The tenant data 523 mightbe divided into individual tenant storage areas 612, which can be eithera physical arrangement and/or a logical arrangement of data.

Within each tenant storage area 612, user storage 614 and applicationmetadata 616 might be similarly allocated for each user. For example, acopy of a user's most recently used (MRU) items might be stored to userstorage 614. Similarly, a copy of MRU items for an entire organizationthat is a tenant might be stored to tenant storage area 612. A UI 630provides a user interface and an API 632 provides an applicationprogrammer interface to system 516 resident processes to users and/ordevelopers at user systems 512. The tenant data and the system data maybe stored in various databases, such as one or more Oracle™ databases.

Application platform 518 includes an application setup mechanism 638that supports application developers' creation and management ofapplications, which may be saved as metadata into tenant data storage522 by save routines 636 for execution by subscribers as one or moretenant process spaces 604 managed by tenant management process 610, forexample. Invocations to such applications may be coded using PL/SOQL 534that provides a programming language style interface extension to API632. A detailed description of some PL/SOQL language embodiments isdiscussed in commonly owned co-pending U.S. Provisional PatentApplication 60/828,192 entitled, PROGRAMMING LANGUAGE METHOD AND SYSTEMFOR EXTENDING APIS TO EXECUTE IN CONJUNCTION WITH DATABASE APIS, byCraig Weissman, filed Oct. 4, 2006, which is incorporated in itsentirety herein for all purposes. Invocations to applications may bedetected by one or more system processes, which manages retrievingapplication metadata 616 for the subscriber making the invocation andexecuting the metadata as an application in a virtual machine.

Each application server 600 may be communicably coupled to databasesystems, e.g., having access to system data 525 and tenant data 523, viaa different network connection. For example, one application server 600₁ might be coupled via the network 514 (e.g., the Internet), anotherapplication server 600 _(N−1) might be coupled via a direct networklink, and another application server 600 _(N) might be coupled by yet adifferent network connection. Transfer Control Protocol and InternetProtocol (TCP/IP) are typical protocols for communicating betweenapplication servers 600 and the database system. However, othertransport protocols may be used to optimize the system depending on thenetwork interconnect used.

In certain embodiments, each application server 600 is configured tohandle requests for any user associated with any organization that is atenant. Because it is desirable to be able to add and remove applicationservers from the server pool at any time for any reason, there may noserver affinity for a user and/or organization to a specific applicationserver 600. In one embodiment, therefore, an interface systemimplementing a load balancing function (e.g., an F5 Big-IP loadbalancer) is communicably coupled between the application servers 600and the user systems 512 to distribute requests to the applicationservers 600.

In one embodiment, the load balancer uses a least connections algorithmto route user requests to the application servers 600. Other examples ofload balancing algorithms, such as round robin and observed responsetime, also can be used. For example, in certain embodiments, threeconsecutive requests from the same user could hit three differentapplication servers 600, and three requests from different users couldhit the same application server 600. In this manner, system 516 ismulti-tenant, wherein system 516 handles storage of, and access to,different objects, data and applications across disparate users andorganizations.

As an example of storage, one tenant might be a company that employs asales force where each salesperson uses system 516 to manage their salesprocess. Thus, a user might maintain contact data, leads data, customerfollow-up data, performance data, goals and progress data, etc., allapplicable to that user's personal sales process (e.g., in tenant datastorage 522). In an example of a MTS arrangement, since all of the dataand the applications to access, view, modify, report, transmit,calculate, etc., can be maintained and accessed by a user system havingnothing more than network access, the user can manage his or her salesefforts and cycles from any of many different user systems. For example,if a salesperson is visiting a customer and the customer has Internetaccess in their lobby, the salesperson can obtain critical updates as tothat customer while waiting for the customer to arrive in the lobby.

While each user's data might be separate from other users' dataregardless of the employers of each user, some data might beorganization-wide data shared or accessible by a plurality of users orall of the users for a given organization that is a tenant. Thus, theremight be some data structures managed by system 516 that are allocatedat the tenant level while other data structures might be managed at theuser level. Because an MTS might support multiple tenants includingpossible competitors, the MTS should have security protocols that keepdata, applications, and application use separate. Also, because manytenants may opt for access to an MTS rather than maintain their ownsystem, redundancy, up-time, and backup are additional functions thatmay be implemented in the MTS. In addition to user-specific data andtenant specific data, system 516 might also maintain system level datausable by multiple tenants or other data. Such system level data mightinclude industry reports, news, postings, and the like that are sharableamong tenants.

In certain embodiments, user systems 512 (which may be client systems)communicate with application servers 600 to request and updatesystem-level and tenant-level data from system 516 that may requiresending one or more queries to tenant data storage 522 and/or systemdata storage 524. System 516 (e.g., an application server 600 in system516) automatically generates one or more SQL statements (e.g., one ormore SQL queries) that are designed to access the desired information.System data storage 524 may generate query plans to access the requesteddata from the database.

Each database can generally be viewed as a collection of objects, suchas a set of logical tables, containing data fitted into predefinedcategories. A “table” is one representation of a data object, and may beused herein to simplify the conceptual description of objects and customobjects according to the present invention. It should be understood that“table” and “object” may be used interchangeably herein. Each tablegenerally contains one or more data categories logically arranged ascolumns or fields in a viewable schema.

Each row or record of a table contains an instance of data for eachcategory defined by the fields. For example, a CRM database may includea table that describes a customer with fields for basic contactinformation such as name, address, phone number, fax number, etc.Another table might describe a purchase order, including fields forinformation such as customer, product, sale price, date, etc. In somemulti-tenant database systems, standard entity tables might be providedfor use by all tenants. For CRM database applications, such standardentities might include tables for Account, Contact, Lead, andOpportunity data, each containing pre-defined fields. It should beunderstood that the word “entity” may also be used interchangeablyherein with “object” and “table”.

In some multi-tenant database systems, tenants may be allowed to createand store custom objects, or they may be allowed to customize standardentities or objects, for example by creating custom fields for standardobjects, including custom index fields. U.S. patent application Ser. No.10/817,161, filed Apr. 2, 2004, entitled “Custom Entities and Fields ina Multi-Tenant Database System”, and which is hereby incorporated hereinby reference, teaches systems and methods for creating custom objects aswell as customizing standard objects in a multi-tenant database system.In certain embodiments, for example, all custom entity data rows arestored in a single multi-tenant physical table, which may containmultiple logical tables per organization. It is transparent to customersthat their multiple “tables” are in fact stored in one large table orthat their data may be stored in the same table as the data of othercustomers.

Reference in the specification to “one embodiment” or “an embodiment”means that a particular feature, structure, or characteristic describedin connection with the embodiment is included in at least one embodimentof the invention. The appearances of the phrase “in one embodiment” invarious places in the specification are not necessarily all referring tothe same embodiment.

While the invention has been described in terms of several embodiments,those skilled in the art will recognize that the invention is notlimited to the embodiments described, but can be practiced withmodification and alteration within the spirit and scope of the appendedclaims. The description is thus to be regarded as illustrative insteadof limiting.

What is claimed is:
 1. A method of modifying a virtual machinefunctionality, the method comprising: receiving one or more archivefiles each including at least a class file; storing the one or morearchive files within the virtual machine, wherein the virtual machineruns on a host system and neither the virtual machine nor the hostsystem are restarted in response to the receiving or storing of the oneor more archive files; scanning files of the host system to find one ormore class files that are not included in a class path for the virtualmachine; copying the one or more class files to a class path for thevirtual machine, wherein neither the virtual machine nor the host systemare restarted in response to the copying of the one or more class files;and registering one or more classes corresponding to the one or moreclass files in the virtual machine in response to the copying of the oneor more class files to the class path, wherein neither the virtualmachine nor the host system are restarted in response to theregistration of the one or more classes.
 2. The method of claim 1wherein the file includes bytecode to provide the functionality.
 3. Themethod of claim 1 wherein the multitenant environment comprises amultitenant database environment, wherein the multitenant databaseenvironment stores data for multiple client entities each identified bya tenant identifier (ID) having one of one or more users associated withthe tenant ID, wherein users of each of multiple client entities canonly access data identified by a tenant ID associated with therespective client entity, and wherein the multitenant database is ahosted database provided by an entity separate from the client entities,and provides on-demand database service to the client entities.
 4. Themethod of claim 3 further comprising assigning the one or more classesto at least one tenant in the multitenant database environment.
 5. Themethod of claim 1 wherein the one or more archive files comprisebytecode files.
 6. The method of claim 1 wherein the scanning the one ormore archive files of the host system is triggered by a call to acomponent type that is not registered.
 7. The method of claim 1 whereinthe scanning the one or more archive files of the host system istriggered by a refresh request.
 8. An article of manufacture comprisinga computer-readable medium having stored thereon instructions, that whenexecuted, cause one or more processors to modify a virtual machinefunctionality, the one or more processors to: receive one or morearchive files each including at least a class file; store the one ormore archive files within the virtual machine, wherein the virtualmachine runs on a host system and neither the virtual machine nor thehost system are restarted in response to the receiving or storing of theone or more archive files; scan files of the host system to find one ormore class files that are not included in a class path for the virtualmachine; copy the one or more class files to a class path for thevirtual machine, wherein neither the virtual machine nor the host systemare restarted in response to the copying of the one or more class files;and register one or more classes corresponding to the one or more classfiles in the virtual machine in response to the copying of the one ormore class files to the class path, wherein neither the virtual machinenor the host system are restarted in response to the registration of theone or more classes.
 9. The article of claim 8 wherein the file includesbytecode to provide the functionality.
 10. The article of claim 9wherein the multitenant environment comprises a multitenant databaseenvironment, wherein the multitenant database environment stores datafor multiple client entities each identified by a tenant identifier (ID)having one of one or more users associated with the tenant ID, whereinusers of each of multiple client entities can only access dataidentified by a tenant ID associated with the respective client entity,and wherein the multitenant database is a hosted database provided by anentity separate from the client entities, and provides on-demanddatabase service to the client entities.
 11. The article of claim 10further comprising instructions that, when executed, cause the one ormore processors to assign the one or more classes to at least one tenantin the multitenant database environment.
 12. The article of claim 8wherein the one or more archive files comprise bytecode files.
 13. Thearticle of claim 8 wherein the scanning the one or more archive files ofthe host system is triggered by a call to a component type that is notregistered.
 14. The article of claim 8 wherein the scanning the one ormore archive files of the host system is triggered by a refresh request.